import os
import shutil
import uuid


def batch_rename_images():
    """批量重命名文件夹内的图片文件为序号格式 (1.jpg, 2.jpg...)"""
    # 创建目标文件夹
    folder_name = "重命名文件夹"
    os.makedirs(folder_name, exist_ok=True)

    # 提示用户存放图片
    print(f"请将所有图片放入 '{folder_name}' 文件夹中")
    input("完成后按回车键开始重命名...")

    # 支持的图片格式
    image_exts = ('.jpg', '.jpeg', '.png', '.gif', '.bmp', '.webp', '.tiff')

    # 获取所有图片文件
    all_files = os.listdir(folder_name)
    image_files = [f for f in all_files if os.path.splitext(f)[1].lower() in image_exts]

    if not image_files:
        print(f"错误: '{folder_name}' 中没有找到图片文件!")
        return

    # 第一次重命名为临时文件 (避免覆盖)
    temp_files = []
    for filename in image_files:
        src = os.path.join(folder_name, filename)
        ext = os.path.splitext(filename)[1].lower()
        temp_name = f"temp_{uuid.uuid4().hex}{ext}"
        dst = os.path.join(folder_name, temp_name)
        os.rename(src, dst)
        temp_files.append((temp_name, ext))

    # 第二次重命名为序号格式
    for idx, (temp_name, ext) in enumerate(temp_files, start=1):
        src = os.path.join(folder_name, temp_name)
        new_name = f"{idx}{ext}"
        dst = os.path.join(folder_name, new_name)
        os.rename(src, dst)
        print(f"已重命名: {temp_name} → {new_name}")

    print(f"\n已完成 {len(image_files)} 个文件的重命名!")
    print(f"所有图片已按序号命名并保存在 '{folder_name}' 文件夹中")


if __name__ == '__main__':
    batch_rename_images()